|
 |
Applicazioni Software |
PROGETTO n° 12 - 6/7
[131 di 166] |
 | Certamente la parte più importante della procedura
Out32bit è quella finale, riportata nella casella di testo
insieme alla sottoprocedura Clock: |
 | Come preannunciato la gestione delle
4 memorie esterne è affidata ad un
loop, per questo caricato a 4 (MOV
CX,4); i 4 bytes coinvolti nella gestione sono assunti
dalla variabile
Dato_32, predisposta in precedenza e puntata dall'istruzione
LEA DI,Dato_32. |
 | A partire da quello meno
significativo, i 4 bytes sono spediti,
uno dopo l'altro tramite AL, sul
Registro d'uscita 0378H/0278H
(PRNdato) e resi disponibili sulle linee
corrispondenti, i
pin 2÷pin
9
del
connettore della porta
parallela |
 | Non appena un byte è presente
sulla porta d'uscita viene creato il necessario sincronismo di memorizzazione
(clock) per la
memoria
74LS374 a cui è destinato. |
 | A questo pensa la sottoprocedura
Clock, appositamente separata dalla precedente per evidenziarne la
valenza; per comprendere meglio i concetti che descriverò tra poco può essere
utile (se non l'hai già fatto ) aprire una seconda
pagina con lo schema elettrico del progetto. |
 | In breve è necessario controllare
3 linee del
decoder binario
74LS139
con l'aiuto di altrettanti bit
del
Registro di controllo 037AH/027AH:
 | i
bit1, bit0
controllano le 2 linee di selezione
del decoder,
A1 sul pin2
e B1 sul pin3 |
 | il
bit2 controlla la
linea di
enable
del decoder,
G1,
attiva bassa,
sul
pin1 |
|
 | Poichè ciascuna delle 4 uscite del
decoder (attive basse) è
collegata
(tramite in inverter) alla linea
di clock (pin11) di
una memorie esterna, è facile capire che il valore di
controllo da predisporre sul
Registro 037AH/027AH
dovrà attivarle una alla volta, in
sequenza. |
 | La scelta del valore da scrivere
sul
Registro è influenzata anche dal fatto che le
linee d'uscita di quest'ultimo (associate ai
bit1,bit0)
sono invertite internamente; tenendo conto di tutto la procedura
Clock è stata studiata per forzare i
bit2,bit1,bit0
del
Registro al giusto valore, nei 4 casi in cui è
chiamata. |
 | La prima volta il valore è
000: il
bit2 a
0 abilita il
decoder
e i
bit1,bit0
a 00
(trasformato in 11, dagli inverter
interni) selezionano l'uscita 3 del
decoder,
producendo un
fronte attivo (di
salita) sulla linea di clock
della prima memoria (n°1),
che copierà così sulla sua uscita il byte presente
sulle
linee dato della parallela. |
 | Le volte successive il valore sarà
001,
010 e
011: in ogni caso
il
bit2 a
0 mantiene abilitato il
decoder
e i
bit1,bit0
selezionano le altre uscite del
decoder, dalla 2 alla 0, garantendo
un
fronte attivo di
clock anche per le rimanenti memorie,
dalla n°2 alla n°4 |
 | Da notare che la procedura Clock
prima di generare un nuovo valore
riporta momentaneamente il
bit2 a
1 (OR
AL,00000100B) per
disabilitare tutte e 4 le linee di clock tra una
fase e l'altra, lasciandole in questo stato (di
attesa) anche al termine dell'ultima memorizzazione. |
©
2001-2006 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|